package es.uv.bd.view.Vino;


import es.uv.bd.model.Vinos;
import es.uv.bd.model.VinosDAO;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.SQLException;
import java.text.ParseException;

import javax.swing.*;


public class VinosEditar_1 extends JFrame {

    private JTextField nombre = new JTextField();
    
    private JComboBox cod_bodega = new JComboBox();

    private JComboBox nombre_tipo = new JComboBox();

    private JComboBox clasificacion = new JComboBox();
    
    
    private JTable mascotaTable;
    private VinosDAO mascotaDao = new VinosDAO();
    private Vinos mascota;

    public VinosEditar_1(String cod_bodega, JTable mascotaTable) {
        
        super("Editar Vino");
        this.mascotaTable = mascotaTable;
        
        try {
            /*
             * Obtenemos el objeto a editar
             */
            mascota = mascotaDao.leerVinos( cod_bodega );
            
            Container cp = this.getContentPane();
            cp.setLayout(new BorderLayout());
            
            /* Cabecera */
            JPanel cabecera = createCabecera();
      
            /* Formulario */
            JPanel form = createForm();
            
            /* Botón */
            JPanel boton = createButton();

            /* Añadimos todos los paneles al Container */
            cp.add(cabecera, BorderLayout.NORTH);
            cp.add(form, BorderLayout.CENTER);
            cp.add(boton, BorderLayout.SOUTH);
            
            setSize(600,400);
            pack();
            setVisible(true);
        } catch (ClassNotFoundException | InstantiationException | IllegalAccessException | SQLException | ParseException e) {
            JOptionPane.showMessageDialog(
                null,
                "Error modificiando Vino: " + e.getMessage(),
                "Atención",
                JOptionPane.ERROR_MESSAGE);
        }
    }
   
    private JPanel createCabecera() {
        JPanel c = new JPanel();
        JLabel l = new JLabel("Editar Vino");
        l.setForeground(Color.BLUE);
        l.setHorizontalAlignment(JLabel.CENTER);
        l.setFont(new Font("Arial",Font.BOLD | Font.ITALIC,22));
        c.add(l);
        
        return c;
    }
    
    private JPanel createForm() {
        JPanel form = new JPanel();
        Font labelFont = new Font("Arial", Font.BOLD, 12);
        Font textfFont = new Font("Arial", Font.PLAIN, 12);
     
        form.setLayout(new GridLayout(5,2));
            
            cod_bodega.setFont(textfFont);
            cod_bodega.setModel(new DefaultComboBoxModel(mascotaDao.fk_Key_BOD()));
            cod_bodega.setSelectedItem(mascota.getCod_Bodega());
            
            nombre.setFont(textfFont);
            nombre.setColumns(4);
            nombre.setText(mascota.getNombre());
            nombre.setEditable(false);
            nombre.setVisible(true);
            
            nombre_tipo.setFont(textfFont);
                        nombre_tipo.setModel(new DefaultComboBoxModel(mascotaDao.fk_Key_TIPO()));

            nombre_tipo.setSelectedItem(mascota.getNombre_tipo());
            
            clasificacion.setFont(textfFont);
            clasificacion.setModel(new DefaultComboBoxModel(new String[] {"joven","crianza","reserva","gran reserva"}));
            clasificacion.setSelectedItem(mascota.getClasificacion());
            
            JLabel cod_bodegaLabel = new JLabel("Codigo de la bodega:");
            cod_bodegaLabel.setFont(labelFont);
            cod_bodegaLabel.setHorizontalAlignment(JLabel.RIGHT);
            form.add(cod_bodegaLabel);
            form.add(cod_bodega);

            JLabel nombreLabel = new JLabel("Nombre del Vino:");
            nombreLabel.setFont(labelFont);
            nombreLabel.setHorizontalAlignment(JLabel.RIGHT);
            form.add(nombreLabel);
            form.add(nombre);
            
            JLabel nombre_tipoLabel = new JLabel("Nombre Tipo del vino:");
            nombre_tipoLabel.setFont(labelFont);
            nombre_tipoLabel.setHorizontalAlignment(JLabel.RIGHT);
            form.add(nombre_tipoLabel);
            form.add(nombre_tipo);

            JLabel clasificacionLabel = new JLabel("clasificacion del Vino:");
            clasificacionLabel.setFont(labelFont);
            clasificacionLabel.setHorizontalAlignment(JLabel.RIGHT);
            form.add(clasificacionLabel);
            form.add(clasificacion);

            JLabel DDO_descripcionLabel = new JLabel("Si nombre_tipo no es tinto");
            DDO_descripcionLabel.setFont(labelFont);
            DDO_descripcionLabel.setHorizontalAlignment(JLabel.RIGHT);
            form.add(DDO_descripcionLabel);
            JLabel DDO_descripcion_2Label = new JLabel(" la clasificacion sera null !! ");
            DDO_descripcion_2Label.setFont(labelFont);
            DDO_descripcion_2Label.setHorizontalAlignment(JLabel.LEFT);
            form.add(DDO_descripcion_2Label);
            
            
        return form;
    }
        
    private JPanel createButton() {
        
        JPanel botonPanel = new JPanel();
        
        JButton boton = new JButton("Modificar");
        boton.setActionCommand("botonVino");
        boton.addActionListener(new ButtonListener());
        botonPanel.add(boton);
        return botonPanel;
    }
    
    private class ButtonListener implements ActionListener {
        @Override
        public void actionPerformed(ActionEvent event) {
            try {
                String key = event.getActionCommand();
                switch (key) {
                    case "botonVino":
                       
                         Vinos mascota = new Vinos();
                        
                        mascota.setCod_Bodega(Integer.parseInt((String)cod_bodega.getSelectedItem()));
                        mascota.setNombre(nombre.getText());
                        mascota.setNombre_tipo((String)nombre_tipo.getSelectedItem());
                        if (((String)nombre_tipo.getSelectedItem()).equals("tinto")) {
                            mascota.setClasificacion((String)clasificacion.getSelectedItem());  
                        }
                        else{
                            mascota.setClasificacion(null);
                        }
                        
                        VinosDAO mascotaDao = new VinosDAO();
                        mascotaDao.actualizarVinos(mascota);
                        /*
                         * Actualizamos el modelo
                         */
                        mascotaTable.setModel(mascotaDao.getTablaVinos());
                        mascotaTable.updateUI();
                        /*
                         * Cerramos la ventana
                         */
                        dispose();
                        break;
                    default:
                        System.out.println("VinosCrear: Accion '" + key + "' no reconocida.");
                        break;
                }
            }
            catch (ClassNotFoundException | InstantiationException | IllegalAccessException | SQLException /*| ParseException*/ e) {
                JOptionPane.showMessageDialog(
                null,
                "Error modificiando Vino: " + e.getMessage(),
                "Atención",
                JOptionPane.ERROR_MESSAGE);
            }
        }
    }
}
